This invention relates generally to electronic circuits and, more particularly, to generation and distribution of synchronizing clock signals within electronic circuits.
Many complex digital logic circuits, including processors, employ a technique called xe2x80x9cpipeliningxe2x80x9d to perform more operations per unit of time (i.e., to increase throughput). Pipelining involves dividing a process into sequential steps, and performing the steps sequentially in independent stages. For example, if a process can be performed via n sequential steps, a pipeline to perform the process may include n separate stages, each performing a different step of the process. Since all n stages can operate concurrently, the pipelined process can potentially operate at n times the rate of the non-pipelined process.
Hardware pipelining involves partitioning a sequential process into stages, and adding storage elements (i.e., groups of latches or flip-flops, commonly called registers) between stages to hold intermediate results. In a typical hardware pipeline, combinational logic within each stage performs logic functions upon input signals received from a previous stage, and the storage elements positioned between the combinational logic of each stage are responsive to one or more synchronizing clock signals. The one or more clock signals control the movement of data within the pipeline.
Within an integrated circuit, a single global clock signal often provides a timing reference for the movement of data. FIGS. 1 and 2 will now be used to describe a timing problem inherent in known systems that distribute a global clock signal across a surface of an integrated circuit, and use local clock buffers located at different points on the surface to generate local clock signals derived from the global clock signal.
FIG. 1 is a diagram of an integrated circuit 100 including a global clock distribution system 102, a first local clock buffer (LCB) 104, and a second local clock buffer (LCB) 106. The global clock distribution system 102 is used to distribute a global clock signal across a surface of the integrated circuit 100. As indicated in FIG. 1, the local clock buffer (LCB) 104 and the local clock buffer (LCB) 106 are located at different points on the surface, and use the global clock signal to generate a first local clock signal xe2x80x9cCLKAxe2x80x9d and a second local clock signalxe2x80x9cCLKB.xe2x80x9d
In general, the local clock signals CLKA and CLKB are used to synchronize the operations of various logic structures (e.g., gates, latches, registers, and the like) of logic circuitry of the integrated circuit 100. The local clock signals CLKA and CLKB may, for example, be the two different xe2x80x9cphasesxe2x80x9d of a two-phase clocking scheme. As is common, the two-phase clocking scheme may be used to control the operations of master-slave latch pairs positioned between the combinational logic of each pipeline stage. Such master-slave latch pairs form flip-flops. One of the local clock signals CLKA and CLKB may be provided to control inputs of the master latches of the flip-flops, and the other one of the local clock signals CLKA and CLKB may be provided to control inputs of the slave latches of the flip-flops.
As indicated in FIG. 1, the local clock buffer (LCB) 104 uses the global clock signal to generate a local clock signal xe2x80x9cCLKA1,xe2x80x9d one version of the local clock signal CLKA, and a local clock signal xe2x80x9cCLKB1,xe2x80x9d one version of the local clock signal CLKB. The local clock buffer (LCB) 106 uses the global clock signal to generate a local clock signal xe2x80x9cCLKA2,xe2x80x9d another version of the local clock signal CLKA, and a local clock signal xe2x80x9cCLKB2,xe2x80x9d another version of the local clock signal CLKB.
FIG. 1 reflects the common situation where the internal structures of the local clock buffers (LCBs) 104 and 106 differ, and timing delays within the local clock buffers (LCBs) 104 and 106 also differ. As a result, common timing points for the local clock buffers (LCBs) 104 and 106 exist within the global clock distribution system 102 as indicated in FIG. 1.
FIG. 2 is a timing diagram illustrating timing relationships between the clock signals within the integrated circuit 100 of FIG. 1. As indicated in FIG. 2, a timing difference between the local clock signal CLKA1 generated by the local clock buffer (LCB) 104 and the local clock signal CLKA2 generated by the local clock buffer (LCB) 106 represents a xe2x80x9cskewxe2x80x9d of the local clock signal CLKA. A similar timing difference between the local clock signal CLKB1 generated by the local clock buffer (LCB) 104 and the local clock signal CLKB2 generated by the local clock buffer (LCB) 106 represents a xe2x80x9cskewxe2x80x9d of the local clock signal CLKB.
As the local clock signals CLKA and CLKB are used to synchronize the operations of logic structures, the skews of the local clock signals CLKA and CLKB may result in timing problems that cause the logic circuitry of the integrated circuit 100 to produce incorrect values. For example, as described above, the local clock signal CLKA may be provided to control inputs of master latches of flip-flops separating the combinational logic of pipeline stages, and the local clock signal CLKB may be provided to control inputs of slave latches of the flip-flops. The skews of the local clock signals CLKA and CLKB may reduce an amount of time a signal derived from an output of a first flip-flop positioned at a beginning of a pipeline stage has to propagate through the combinational logic of the stage and reach a second flip-flop positioned at an end of the pipeline stage. If a cycle time (i.e., period) of the global clock signal is not made long enough, the signal may not reach the second flip-flop before the master latch xe2x80x9ccapturesxe2x80x9d the value of the signal at the input, and the flip-flop may capture an incorrect value of the signal. As a result, the logic circuitry of the integrated circuit 100 may produce one or more incorrect values.
In general, use of the different local clock buffers (LCBs) 104 and 106 to produce the local clock signals CLKA and CLKB results in relatively large skews of the local clock signals CLKA and CLKB, causes a lower bound of the period of the global clock signal to be relatively high, and thereby reduces an upper bound of a maximum performance of the logic circuitry of the integrated circuit 100.
It would thus be advantageous to have a local clock signal generation system wherein timing differences between local clock signals (i.e., local clock signal xe2x80x9cskewsxe2x80x9d) are reduced.
Several local clock buffer structures are disclosed, each including an input section and an output section. The input sections are substantially identical, and include control logic and gating logic. The control logic receives multiple control signals and a global clock signal, and produces a time-delayed version of the global clock signal, and a gating signal dependent upon the control signals and the time-delayed version of the global clock signal. The gating logic receives the global clock signal and the gating signal, and produces an intermediate clock signal dependent upon the global clock signal and the gating signal. The output section receives the intermediate clock signal and produces at least one local clock signal dependent upon the intermediate clock signal.
In one embodiment, the output section of the local clock buffer produces a first local clock signal dependent upon the intermediate clock signal and a second local clock signal dependent upon the first local clock signal. In another embodiment, the gating logic receives a feedback signal in addition to the global clock signal and the gating signal, and produces the intermediate clock signal dependent upon the global clock signal, the gating signal, and the feedback signal. The output section produces the feedback signal and one or more local clock signals dependent upon the intermediate clock signal.